Скрипт на языке WinHex (.whs) выполняет следующие операции с файлом прошивки, описанной в формате Intel Hex (.HEX): Назначение скрипта: Конвертирует прошивку из Intel Hex в бинарный формат. Дополняет файл до размера 32 КБ, заполняя оставшиеся байты значениями 0xFF. (Опционально) Рассчитывает и добавляет контрольную сумму, если закомментированный код будет активирован. 1. Turbo On Активирует режим Turbo в WinHex, что повышает производительность операций на больших файлах. 2. Open "C:...\PriborTL7.HEX" Открывает файл прошивки в формате Intel Hex. 3. Convert IntelHex Binary Конвертирует файл из формата Intel Hex в бинарный формат. Intel Hex — это текстовый формат, содержащий адреса и данные. Конвертация упрощает дальнейшую обработку, так как создаётся чистый бинарный файл. 4. Assign binfilesize GetSize Сохраняет размер бинарного файла в переменную binfilesize. 5. Goto (binfilesize-1) Переходит к последнему байту в бинарном файле. 6. Write2 0x00ff Записывает два байта (0x00FF) в конец файла, начиная с текущей позиции. 7. {Write 0xFF}[(32768-binfilesize-1)] Добавляет байты 0xFF, чтобы расширить файл до размера 32 768 байт (32 КБ). (32768-binfilesize-1) вычисляет, сколько байтов 0xFF нужно добавить. 8. Write2 0xff Записывает ещё два байта (0x00FF) в конец файла. 9. SaveAs "C:...\PriborTL7.bin" Сохраняет изменённый бинарный файл под именем PriborTL7.bin. 10. Закомментированный код (контрольная сумма): Этот блок кода закомментирован, но он предназначен для расчёта контрольной суммы. Вот как он должен работать: Инициализация переменных: checkSum — для хранения рассчитанной контрольной суммы. temp, temp1, temp2 — временные переменные. addr — начальный адрес для расчёта. Расчёт контрольной суммы: Читает 2 байта (16 бит) из файла начиная с адреса 8192. Меняет местами старший и младший байты (перестановка). Добавляет эти 16 бит к переменной checkSum. Продолжает так до адреса 32766. Запись контрольной суммы: Записывает рассчитанную сумму по адресу 0x7FFE. Сохраняет результат как PriborTL7_cs.bin. Этот блок сейчас не выполняется, так как все строки закомментированы (//), но если его включить, он добавит контрольную сумму в бинарный файл. 11. CloseAll Закрывает все открытые файлы. 12. Exit Завершает выполнение скрипта. Turbo On Open "C:\Project\Project_CodeMaster\PriborTL7\PriborTL7\Debug\Exe\PriborTL7.HEX" Convert IntelHex Binary Assign binfilesize GetSize Goto (binfilesize-1) Write2 0x00ff {Write 0xFF}[(32768-binfilesize-1)] Write2 0xff SaveAs "C:\Project\Project_CodeMaster\PriborTL7\PriborTL7\Debug\Exe\PriborTL7.bin" //Assign checkSum 0 //Assign temp 0 //Assign temp1 0 //Assign temp2 0 //Assign addr 8192 //SetVarSize checkSum 2 //SetVarSize temp 2 //SetVarSize addr 2 //SetVarSize temp1 1 //SetVarSize temp2 1 //Goto addr //{ //Read temp 2 //Assign temp1 (temp&0xff) //Assign temp2 ((temp&0xff00)/256) //Assign temp ((temp1*256)|temp2) //Assign checkSum (checkSum+temp) //SetVarSize checkSum 2 //Inc addr //}[((32766-8192)/2)] //Assign temp1 (checkSum&0xff) //Assign temp2 ((checkSum&0xff00)/256) //Assign checkSum ((temp1*256)|temp2) //Goto 0x7ffe //Write2 checkSum //SaveAs "C:\Project\Project_CodeMaster\PriborTL7\PriborTL7\Debug\Exe\PriborTL7_cs.bin" CloseAll Exit